namespace ext.list
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Ext.list.ListView is a fast and light-weight implentation of a
	/// {@link Ext.grid.GridPanel Grid} like view with the following characteristics:    resizable columns  selectable  column widths are initially proportioned by percentage based on the container
	/// width and number of columns  uses templates to render the data in any required format  no horizontal scrolling  no editing    Example usage:  
	/// // consume JSON of this form:
	/// {
	/// &quot;images&quot;:[
	/// {
	/// &quot;name&quot;:&quot;dance_fever.jpg&quot;,
	/// &quot;size&quot;:2067,
	/// &quot;lastmod&quot;:1236974993000,
	/// &quot;url&quot;:&quot;images\/thumbs\/dance_fever.jpg&quot;
	/// },
	/// {
	/// &quot;name&quot;:&quot;zack_sink.jpg&quot;,
	/// &quot;size&quot;:2303,
	/// &quot;lastmod&quot;:1236974993000,
	/// &quot;url&quot;:&quot;images\/thumbs\/zack_sink.jpg&quot;
	/// }
	/// ]
	/// }
	/// var store = new Ext.data.JsonStore({
	/// url: &apos;get-images.php&apos;,
	/// root: &apos;images&apos;,
	/// fields: [
	/// &apos;name&apos;, &apos;url&apos;,
	/// {name:&apos;size&apos;, type: &apos;float&apos;},
	/// {name:&apos;lastmod&apos;, type:&apos;date&apos;, dateFormat:&apos;timestamp&apos;}
	/// ]
	/// });
	/// store.load();
	///
	/// var listView = new Ext.list.ListView({
	/// store: store,
	/// multiSelect: true,
	/// emptyText: &apos;No images to...
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;Ext.list.ListView is a fast and light-weight implentation of a
	/// {@link Ext.grid.GridPanel Grid} like view with the following characteristics:&lt;/p&gt;
	/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
	/// &lt;li&gt;resizable columns&lt;/li&gt;
	/// &lt;li&gt;selectable&lt;/li&gt;
	/// &lt;li&gt;column widths are initially proportioned by percentage based on the container
	/// width and number of columns&lt;/li&gt;
	/// &lt;li&gt;uses templates to render the data in any required format&lt;/li&gt;
	/// &lt;li&gt;no horizontal scrolling&lt;/li&gt;
	/// &lt;li&gt;no editing&lt;/li&gt;
	/// &lt;/ul&gt;&lt;/div&gt;
	/// &lt;p&gt;Example usage:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// // consume JSON of this form:
	/// {
	/// &quot;images&quot;:[
	/// {
	/// &quot;name&quot;:&quot;dance_fever.jpg&quot;,
	/// &quot;size&quot;:2067,
	/// &quot;lastmod&quot;:1236974993000,
	/// &quot;url&quot;:&quot;images\/thumbs\/dance_fever.jpg&quot;
	/// },
	/// {
	/// &quot;name&quot;:&quot;zack_sink.jpg&quot;,
	/// &quot;size&quot;:2303,
	/// &quot;lastmod&quot;:1236974993000,
	/// &quot;url&quot;:&quot;images\/thumbs\/zack_sink.jpg&quot;
	/// }
	/// ]
	/// }
	/// var store = new Ext.data.JsonStore({
	/// url: &apos;get-images.php&apos;,
	/// root: &apos;images&apos;,
	/// fields: [
	/// &apos;name&apos;, &apos;url&apos;,
	/// {name:&apos;size&apos;, type: &apos;float&apos;},
	/// {name:&apos;lastmod&apos;, type:&apos;date&apos;, dateFormat:&apos;timestamp&apos;}
	/// ]
	/// });
	/// store.load();
	///
	/// var listView = new Ext.list.ListView({
	/// store: store,
	/// multiSelect: true,
	/// emptyText: &apos;No images to display&apos;,
	/// reserveScrollOffset: true,
	/// columns: [{
	/// header: &apos;File&apos;,
	/// width: .5,
	/// dataIndex: &apos;name&apos;
	/// },{
	/// header: &apos;Last Modified&apos;,
	/// width: .35,
	/// dataIndex: &apos;lastmod&apos;,
	/// tpl: &apos;{lastmod:date(&quot;m-d h:i a&quot;)}&apos;
	/// },{
	/// header: &apos;Size&apos;,
	/// dataIndex: &apos;size&apos;,
	/// tpl: &apos;{size:fileSize}&apos;, // format using Ext.util.Format.fileSize()
	/// align: &apos;right&apos;
	/// }]
	/// });
	///
	/// // put it in a Panel so it looks pretty
	/// var panel = new Ext.Panel({
	/// id:&apos;images-view&apos;,
	/// width:425,
	/// height:250,
	/// collapsible:true,
	/// layout:&apos;fit&apos;,
	/// title:&apos;Simple ListView &lt;i&gt;(0 items selected)&lt;/i&gt;&apos;,
	/// items: listView
	/// });
	/// panel.render(document.body);
	///
	/// // little bit of feedback
	/// listView.on(&apos;selectionchange&apos;, function(view, nodes){
	/// var l = nodes.length;
	/// var s = l != 1 ? &apos;s&apos; : &apos;&apos;;
	/// panel.setTitle(&apos;Simple ListView &lt;i&gt;(&apos;+l+&apos; item&apos;+s+&apos; selected)&lt;/i&gt;&apos;);
	/// });
	/// &lt;/code&gt;&lt;/pre&gt;
	/// </htmlSummary>
	/// <definedin>src\widgets\list\ListView.js</definedin>
	[ScriptName("ListView")]
	[ScriptNamespace("Ext.list")]
	[Imported()]
	public partial class ListView : ext.DataView
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config"></param>
		public ListView(ext.list.ListView_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public ListView()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// true to hide the {@link #internalTpl header row} (defaults to false so
		/// the {@link #internalTpl header row} will be shown).
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;true&lt;/tt&gt; to hide the {@link #internalTpl header row} (defaults to &lt;tt&gt;false&lt;/tt&gt; so
		/// the {@link #internalTpl header row} will be shown).
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("hideHeaders")]
		public bool HideHeaders;
		
		/// <summary>
		/// Defaults to &apos;dl&apos; to work with the preconfigured {@link Ext.DataView#tpl tpl}.
		/// This setting specifies the CSS selector (e.g. div.some-class or span:first-child)
		/// that will be used to determine what nodes the ListView will be working with.
		/// </summary>
		/// <htmlSummary>
		/// Defaults to &lt;tt&gt;&apos;dl&apos;&lt;/tt&gt; to work with the preconfigured &lt;b&gt;&lt;tt&gt;{@link Ext.DataView#tpl tpl}&lt;/tt&gt;&lt;/b&gt;.
		/// This setting specifies the CSS selector (e.g. &lt;tt&gt;div.some-class&lt;/tt&gt; or &lt;tt&gt;span:first-child&lt;/tt&gt;)
		/// that will be used to determine what nodes the ListView will be working with.
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("itemSelector")]
		public string ItemSelector;
		
		/// <summary>
		/// The CSS class applied to a selected row (defaults to
		/// &apos;x-list-selected&apos;). An example overriding the default styling:
		/// 
		/// .x-list-selected {background-color: yellow;}
		/// </summary>
		/// <htmlSummary>
		/// The CSS class applied to a selected row (defaults to
		/// &lt;tt&gt;&apos;x-list-selected&apos;&lt;/tt&gt;). An example overriding the default styling:
		/// &lt;pre&gt;&lt;code&gt;
		/// .x-list-selected {background-color: yellow;}
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("selectedClass")]
		public string SelectedClass;
		
		/// <summary>
		/// The CSS class applied when over a row (defaults to
		/// &apos;x-list-over&apos;). An example overriding the default styling:
		/// 
		/// .x-list-over {background-color: orange;}
		/// </summary>
		/// <htmlSummary>
		/// The CSS class applied when over a row (defaults to
		/// &lt;tt&gt;&apos;x-list-over&apos;&lt;/tt&gt;). An example overriding the default styling:
		/// &lt;pre&gt;&lt;code&gt;
		/// .x-list-over {background-color: orange;}
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("overClass")]
		public string OverClass;
		
		/// <summary>
		/// By default will defer accounting for the configured {@link #scrollOffset}
		/// for 10 milliseconds. Specify true to account for the configured
		/// {@link #scrollOffset} immediately.
		/// </summary>
		/// <htmlSummary>
		/// By default will defer accounting for the configured &lt;b&gt;&lt;tt&gt;{@link #scrollOffset}&lt;/tt&gt;&lt;/b&gt;
		/// for 10 milliseconds. Specify &lt;tt&gt;true&lt;/tt&gt; to account for the configured
		/// &lt;b&gt;&lt;tt&gt;{@link #scrollOffset}&lt;/tt&gt;&lt;/b&gt; immediately.
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("reserveScrollOffset")]
		public bool ReserveScrollOffset;
		
		/// <summary>
		/// The amount of space to reserve for the scrollbar (defaults to
		/// undefined). If an explicit value isn&apos;t specified, this will be automatically
		/// calculated.
		/// </summary>
		/// <htmlSummary>
		/// The amount of space to reserve for the scrollbar (defaults to
		/// &lt;tt&gt;undefined&lt;/tt&gt;). If an explicit value isn&apos;t specified, this will be automatically
		/// calculated.
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("scrollOffset")]
		public System.Number ScrollOffset;
		
		/// <summary>
		/// Specify true or specify a configuration object for {@link Ext.list.ListView.ColumnResizer}
		/// to enable the columns to be resizable (defaults to true).
		/// </summary>
		/// <htmlSummary>
		/// Specify &lt;tt&gt;true&lt;/tt&gt; or specify a configuration object for {@link Ext.list.ListView.ColumnResizer}
		/// to enable the columns to be resizable (defaults to &lt;tt&gt;true&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("columnResize")]
		public ext.auto.System_Boolean_Or_System_Object ColumnResize;
		
		/// <summary>
		/// An array of column configuration objects, for example:
		/// 
		/// {
		/// align: &apos;right&apos;,
		/// dataIndex: &apos;size&apos;,
		/// header: &apos;Size&apos;,
		/// tpl: &apos;{size:fileSize}&apos;,
		/// width: .35
		/// }
		/// 
		/// Acceptable properties for each column configuration object are:
		///   align : String Set the CSS text-align property
		/// of the column. Defaults to &apos;left&apos;.   dataIndex : String See {@link Ext.grid.Column}.
		/// {@link Ext.grid.Column#dataIndex dataIndex} for details.   header : String See {@link Ext.grid.Column}.
		/// {@link Ext.grid.Column#header header} for details.   tpl : String Specify a string to pass as the
		/// configuration string for {@link Ext.XTemplate}. By default an {@link Ext.XTemplate}
		/// will be implicitly created using the dataIndex.   width : Number Percentage of the container width
		/// this column should be allocated. Columns that have no width specified will be
		/// allocated with an equal percentage to fill 100% of the container width. To easily take
		/// advantage of the full container width, leave the width of at least one column...
		/// </summary>
		/// <htmlSummary>
		/// An array of column configuration objects, for example:
		/// &lt;pre&gt;&lt;code&gt;
		/// {
		/// align: &apos;right&apos;,
		/// dataIndex: &apos;size&apos;,
		/// header: &apos;Size&apos;,
		/// tpl: &apos;{size:fileSize}&apos;,
		/// width: .35
		/// }
		/// &lt;/code&gt;&lt;/pre&gt;
		/// Acceptable properties for each column configuration object are:
		/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;align&lt;/tt&gt;&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;Set the CSS text-align property
		/// of the column. Defaults to &lt;tt&gt;&apos;left&apos;&lt;/tt&gt;.&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;dataIndex&lt;/tt&gt;&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;See {@link Ext.grid.Column}.
		/// {@link Ext.grid.Column#dataIndex dataIndex} for details.&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;header&lt;/tt&gt;&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;See {@link Ext.grid.Column}.
		/// {@link Ext.grid.Column#header header} for details.&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;tpl&lt;/tt&gt;&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;Specify a string to pass as the
		/// configuration string for {@link Ext.XTemplate}. By default an {@link Ext.XTemplate}
		/// will be implicitly created using the &lt;tt&gt;dataIndex&lt;/tt&gt;.&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;&lt;tt&gt;width&lt;/tt&gt;&lt;/b&gt; : Number&lt;div class=&quot;sub-desc&quot;&gt;Percentage of the container width
		/// this column should be allocated. Columns that have no width specified will be
		/// allocated with an equal percentage to fill 100% of the container width. To easily take
		/// advantage of the full container width, leave the width of at least one column undefined.
		/// Note that if you do not want to take up the full width of the container, the width of
		/// every column needs to be explicitly defined.&lt;/div&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("columns")]
		public System.Array Columns;
		
		/// <summary>
		/// Specify true or specify a configuration object for {@link Ext.list.ListView.Sorter}
		/// to enable the columns to be sortable (defaults to true).
		/// </summary>
		/// <htmlSummary>
		/// Specify &lt;tt&gt;true&lt;/tt&gt; or specify a configuration object for {@link Ext.list.ListView.Sorter}
		/// to enable the columns to be sortable (defaults to &lt;tt&gt;true&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("columnSort")]
		public ext.auto.System_Boolean_Or_System_Object ColumnSort;
		
		/// <summary>The template to be used for the header row. See {@link #tpl} for more details.</summary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("internalTpl")]
		public ext.auto.System_String_Or_System_Array InternalTpl;
		#endregion
		
		#region Properties
		/// <summary>
		/// Set this property to true to disable the header click handler disabling sort
		/// (defaults to false).
		/// </summary>
		/// <htmlSummary>
		/// Set this property to &lt;tt&gt;true&lt;/tt&gt; to disable the header click handler disabling sort
		/// (defaults to &lt;tt&gt;false&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		[ScriptName("disableHeaders")]
		[IntrinsicProperty()]
		public bool DisableHeaders
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>
		/// Function which can be overridden which returns the data object passed to this
		/// view&apos;s {@link #tpl template} to render the whole ListView. The returned object
		/// shall contain the following properties:    columns : String See {@link #columns}   rows : String See
		/// {@link Ext.DataView}.{@link Ext.DataView#collectData collectData}
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;Function which can be overridden which returns the data object passed to this
		/// view&apos;s {@link #tpl template} to render the whole ListView. The returned object
		/// shall contain the following properties:&lt;/p&gt;
		/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;columns&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;See &lt;tt&gt;{@link #columns}&lt;/tt&gt;&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;rows&lt;/b&gt; : String&lt;div class=&quot;sub-desc&quot;&gt;See
		/// &lt;tt&gt;{@link Ext.DataView}.{@link Ext.DataView#collectData collectData}&lt;/div&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\list\ListView.js</definedin>
		/// <param name="records">An Array of {@link Ext.data.Record}s to be rendered into the DataView.</param>
		/// <param name="startIndex">the index number of the Record being prepared for rendering.</param>
		/// <returns>
		/// A data object containing properties to be processed by a repeating
		/// XTemplate as described above.
		/// </returns>
		[ScriptName("collectData")]
		public object CollectData(System.Array records, System.Number startIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
